* Step 1: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            +(x,0()) -> x
            +(x,s(y)) -> s(+(x,y))
            double(0()) -> 0()
            double(s(x)) -> s(s(double(x)))
            sqr(0()) -> 0()
            sqr(s(x)) -> +(sqr(x),s(double(x)))
            sqr(s(x)) -> s(+(sqr(x),double(x)))
        - Signature:
            {+/2,double/1,sqr/1} / {0/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {+,double,sqr} and constructors {0,s}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(+) = {1,2},
            uargs(s) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                 p(+) = [1] x1 + [1] x2 + [6]
                 p(0) = [4]                  
            p(double) = [10]                 
                 p(s) = [1] x1 + [4]         
               p(sqr) = [5] x1 + [2]         
          
          Following rules are strictly oriented:
             +(x,0()) = [1] x + [10]
                      > [1] x + [0] 
                      = x           
          
          double(0()) = [10]        
                      > [4]         
                      = 0()         
          
             sqr(0()) = [22]        
                      > [4]         
                      = 0()         
          
          
          Following rules are (at-least) weakly oriented:
             +(x,s(y)) =  [1] x + [1] y + [10]  
                       >= [1] x + [1] y + [10]  
                       =  s(+(x,y))             
          
          double(s(x)) =  [10]                  
                       >= [18]                  
                       =  s(s(double(x)))       
          
             sqr(s(x)) =  [5] x + [22]          
                       >= [5] x + [22]          
                       =  +(sqr(x),s(double(x)))
          
             sqr(s(x)) =  [5] x + [22]          
                       >= [5] x + [22]          
                       =  s(+(sqr(x),double(x)))
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 2: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            +(x,s(y)) -> s(+(x,y))
            double(s(x)) -> s(s(double(x)))
            sqr(s(x)) -> +(sqr(x),s(double(x)))
            sqr(s(x)) -> s(+(sqr(x),double(x)))
        - Weak TRS:
            +(x,0()) -> x
            double(0()) -> 0()
            sqr(0()) -> 0()
        - Signature:
            {+/2,double/1,sqr/1} / {0/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {+,double,sqr} and constructors {0,s}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(+) = {1,2},
            uargs(s) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                 p(+) = [1] x1 + [1] x2 + [0]
                 p(0) = [0]                  
            p(double) = [1]                  
                 p(s) = [1] x1 + [2]         
               p(sqr) = [6] x1 + [1]         
          
          Following rules are strictly oriented:
          sqr(s(x)) = [6] x + [13]          
                    > [6] x + [4]           
                    = +(sqr(x),s(double(x)))
          
          sqr(s(x)) = [6] x + [13]          
                    > [6] x + [4]           
                    = s(+(sqr(x),double(x)))
          
          
          Following rules are (at-least) weakly oriented:
              +(x,0()) =  [1] x + [0]        
                       >= [1] x + [0]        
                       =  x                  
          
             +(x,s(y)) =  [1] x + [1] y + [2]
                       >= [1] x + [1] y + [2]
                       =  s(+(x,y))          
          
           double(0()) =  [1]                
                       >= [0]                
                       =  0()                
          
          double(s(x)) =  [1]                
                       >= [5]                
                       =  s(s(double(x)))    
          
              sqr(0()) =  [1]                
                       >= [0]                
                       =  0()                
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 3: NaturalPI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            +(x,s(y)) -> s(+(x,y))
            double(s(x)) -> s(s(double(x)))
        - Weak TRS:
            +(x,0()) -> x
            double(0()) -> 0()
            sqr(0()) -> 0()
            sqr(s(x)) -> +(sqr(x),s(double(x)))
            sqr(s(x)) -> s(+(sqr(x),double(x)))
        - Signature:
            {+/2,double/1,sqr/1} / {0/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {+,double,sqr} and constructors {0,s}
    + Applied Processor:
        NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a polynomial interpretation of kind constructor-based(mixed(2)):
        The following argument positions are considered usable:
          uargs(+) = {1,2},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {+,double,sqr}
        TcT has computed the following interpretation:
               p(+) = x1 + x2   
               p(0) = 0         
          p(double) = 3*x1      
               p(s) = 1 + x1    
             p(sqr) = 2 + 2*x1^2
        
        Following rules are strictly oriented:
        double(s(x)) = 3 + 3*x        
                     > 2 + 3*x        
                     = s(s(double(x)))
        
        
        Following rules are (at-least) weakly oriented:
           +(x,0()) =  x                     
                    >= x                     
                    =  x                     
        
          +(x,s(y)) =  1 + x + y             
                    >= 1 + x + y             
                    =  s(+(x,y))             
        
        double(0()) =  0                     
                    >= 0                     
                    =  0()                   
        
           sqr(0()) =  2                     
                    >= 0                     
                    =  0()                   
        
          sqr(s(x)) =  4 + 4*x + 2*x^2       
                    >= 3 + 3*x + 2*x^2       
                    =  +(sqr(x),s(double(x)))
        
          sqr(s(x)) =  4 + 4*x + 2*x^2       
                    >= 3 + 3*x + 2*x^2       
                    =  s(+(sqr(x),double(x)))
        
* Step 4: NaturalPI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            +(x,s(y)) -> s(+(x,y))
        - Weak TRS:
            +(x,0()) -> x
            double(0()) -> 0()
            double(s(x)) -> s(s(double(x)))
            sqr(0()) -> 0()
            sqr(s(x)) -> +(sqr(x),s(double(x)))
            sqr(s(x)) -> s(+(sqr(x),double(x)))
        - Signature:
            {+/2,double/1,sqr/1} / {0/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {+,double,sqr} and constructors {0,s}
    + Applied Processor:
        NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a polynomial interpretation of kind constructor-based(mixed(2)):
        The following argument positions are considered usable:
          uargs(+) = {1,2},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {+,double,sqr}
        TcT has computed the following interpretation:
               p(+) = 1 + x1 + 2*x2
               p(0) = 0            
          p(double) = 1 + 2*x1     
               p(s) = 1 + x1       
             p(sqr) = 3*x1 + 2*x1^2
        
        Following rules are strictly oriented:
        +(x,s(y)) = 3 + x + 2*y
                  > 2 + x + 2*y
                  = s(+(x,y))  
        
        
        Following rules are (at-least) weakly oriented:
            +(x,0()) =  1 + x                 
                     >= x                     
                     =  x                     
        
         double(0()) =  1                     
                     >= 0                     
                     =  0()                   
        
        double(s(x)) =  3 + 2*x               
                     >= 3 + 2*x               
                     =  s(s(double(x)))       
        
            sqr(0()) =  0                     
                     >= 0                     
                     =  0()                   
        
           sqr(s(x)) =  5 + 7*x + 2*x^2       
                     >= 5 + 7*x + 2*x^2       
                     =  +(sqr(x),s(double(x)))
        
           sqr(s(x)) =  5 + 7*x + 2*x^2       
                     >= 4 + 7*x + 2*x^2       
                     =  s(+(sqr(x),double(x)))
        
* Step 5: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            +(x,0()) -> x
            +(x,s(y)) -> s(+(x,y))
            double(0()) -> 0()
            double(s(x)) -> s(s(double(x)))
            sqr(0()) -> 0()
            sqr(s(x)) -> +(sqr(x),s(double(x)))
            sqr(s(x)) -> s(+(sqr(x),double(x)))
        - Signature:
            {+/2,double/1,sqr/1} / {0/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {+,double,sqr} and constructors {0,s}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(n^2))